from tools.DBUtil import DBUtil


users = """
韩茂林
朱健峰
陈俊逸
叶国龙
陈真
刘嘉豪
白雪松
冯宇豪
李甘源
田光钧
伍雁华
邓昌林
黄天兵
杨港
徐鸿
李晓锋
柳杨
陈南南
王大庆
吴泽旋
赵少佳
王梅
吴科
申志伟
吴涛
黄发鐏
何平文
张峻凡
余佳文
张锦彬
唐杰
杨辉
魏国峰
杨旭晨
黄明利
孟宪初
陈艳威
张伟健
彭杰
邹国伟
黄顺能
冉光辉
黎强
沈文军
梁玉生
赵子根
王斌浩
周仁航
胡开放
杨政
娄光远
贾利伟
崔幸军
梁舒幸
徐浩
王水
潘夕坤
袁明军
严锦波
康杰
李坤鑫
朱少峰
操天浩
吕武
徐元松
郭昌林
翁铖
阮超凡
刘国荣
张修金
曾伟
王壮
胡森帅
张倩
陈林浩
夏赟承
王腾斌
毛文星
杨晨朝
郭维
柯云川
姬裕鹏
毛华云
翟少秋
韩磊
孙雷
杜军芝
成少卓
罗道冰
朱玲
黄楚标
丛雷
张嘉伟
田鹏
王梓昱
张镇生
张栩民
张圣铿
祝铭鸿
陈林
李钊
孙多平
马良滔
李俊锜
苏海伟
韦南林
杨帅
罗桢荣
王昭伟
王杰
唐琳
马永飞
曾繁洋
龙贤建
吴保临
梁帅
郑庆林
廖志强
崔万州
杨晶凤
晋涛
王伟
温圆
廖其华
杨志强
徐奕信
黄威
刘文鑫
周佳勇
聂军
王君莹
邵尤慎
杨清柳
曾就业
王全军
叶再发
蔡智雄
刘得利
岑银
吴先勇
吕新亚
刘脐霜
"""


# 创建user表
create_user_table = """
CREATE TABLE IF NOT EXISTS user (
    id INTEGER PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL,
    passwd VARCHAR(255),
    usergroup VARCHAR(255),
    oamail VARCHAR(255),
    registertime DATETIME,
    lastlogintime DATETIME
);
"""

# 创建system_config表
create_system_config_table = """
CREATE TABLE IF NOT EXISTS system_config (
    approval BOOLEAN NOT NULL,
    email VARCHAR(255) PRIMARY KEY,
    passwd VARCHAR(255) NOT NULL,
    server VARCHAR(255) NOT NULL,
    port INTEGER NOT NULL
);
"""

# 创建config_vsphere表
create_config_vpshere = """
CREATE TABLE IF NOT EXISTS config_vsphere (
    id INTEGER PRIMARY KEY AUTO_INCREMENT,
    servername VARCHAR(255) NOT NULL,
    serverip VARCHAR(255) NOT NULL,
    username VARCHAR(255) NOT NULL,
    passwd VARCHAR(255) NOT NULL,
    datacentername VARCHAR(255) NOT NULL,
    modelfoldername VARCHAR(255) NOT NULL
);
"""

# 创建vm_list表
create_vm_list_table = """
CREATE TABLE IF NOT EXISTS vm_list (
    id INTEGER PRIMARY KEY AUTO_INCREMENT,
    vmname VARCHAR(255) NOT NULL,
    function VARCHAR(255),
    applytime DATETIME,
    applyreason TEXT,
    endtime DATETIME,
    owner_id INTEGER,
    vsphere_id INTEGER,
    FOREIGN KEY (owner_id) REFERENCES user(id),
    FOREIGN KEY (vsphere_id) REFERENCES config_vsphere(id)
);
"""

# 创建vm_apply_his表
create_vm_apply_his_table = """
CREATE TABLE IF NOT EXISTS vm_apply_his (
    id INT PRIMARY KEY AUTO_INCREMENT,
    vmname VARCHAR(255) NOT NULL,
    platform VARCHAR(255) NOT NULL,
    vmmodel VARCHAR(255) NOT NULL,
    usergroup VARCHAR(255) NOT NULL,
    useto VARCHAR(255) NOT NULL,
    useendtime DATETIME,
    applyreason TEXT,
    username VARCHAR(255) NOT NULL,
    applytime DATETIME,
    approvalstatus BOOLEAN NOT NULL,
    approvalcode VARCHAR(255) NOT NULL
);
"""

# 创建config_group表
create_config_group_table = """
CREATE TABLE IF NOT EXISTS config_group (
    groupname VARCHAR(255),
    adminemail VARCHAR(255)
);
"""

def init_database():
    try:
        # 1.创建表
        DBUtil.uid_db(create_user_table)
        DBUtil.uid_db(create_system_config_table)
        DBUtil.uid_db(create_config_vpshere)
        DBUtil.uid_db(create_vm_list_table)
        DBUtil.uid_db(create_vm_apply_his_table)
        DBUtil.uid_db(create_config_group_table)

        # 2.插入系统配置数据
        system_config_data = DBUtil.select_all("select * from system_config;")
        if not system_config_data:
            DBUtil.uid_db("insert into system_config (approval, email, passwd, server, port) values (1, 'syscom_test@cyg.com', '5RFf3xWIsmxChcjg', 'mail.cyg.com', 465);")

        # 3.插入用户数据
        user_data = DBUtil.select_all("select * from user;")
        if not user_data:
            DBUtil.uid_db("insert into user (username, passwd, usergroup, oamail, registertime, lastlogintime) values ('admin', '8d3acb49fb77fb96355badadbfef6da7', '系统管理员', 'admin@admin.com', NOW(), NOW());")
            for name in users.split('\n'):
                if name.strip():
                    DBUtil.uid_db("INSERT INTO user (username) VALUES (%s)",(name.strip(),))
        print("数据库初始化完成")
    except Exception as e:
        print(f"创建表时发生错误: {e}")